package com.divemotor.ventarepuestosinternet.util.converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

@FacesConverter(value="fechaHoraAmPmConverter")
public class FechaHoraAmPmConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) {
		if (submittedValue == null || submittedValue == "") return null;
		
		String dividirEspacios[] = submittedValue.split(" ");
		String stringFecha = "";
		
		if (dividirEspacios[2].equals("a.m.")) {
			stringFecha = dividirEspacios[0] + " " + dividirEspacios[1];
			try {
				return (new SimpleDateFormat("dd/MM/yyyy HH:mm:ss")).parse(stringFecha);
			} catch (ParseException e) {
				e.printStackTrace();
				return null;
			}
		} else {
			String horaMinutoSegundo[] = dividirEspacios[1].split(":");
			horaMinutoSegundo[0] = (new Integer(Integer.parseInt(horaMinutoSegundo[0]) + 12)).toString();
			stringFecha = dividirEspacios[0] + " " + horaMinutoSegundo[0] + ":" + horaMinutoSegundo[1] + ":" + horaMinutoSegundo[2];
			try {
				return (new SimpleDateFormat("dd/MM/yyyy HH:mm:ss")).parse(stringFecha);
			} catch (ParseException e) {
				e.printStackTrace();
				return null;
			}
		}
	}

	@Override
	public String getAsString(FacesContext facesContext, UIComponent component, Object value) {
		
		if (!(value instanceof Date)) return null;
		
		Date date = (Date) value;
		
		return (new SimpleDateFormat("dd/MM/yyyy hh:mm:ss")).format(date) + " " +
		 	   (Integer.parseInt((new SimpleDateFormat("HH")).format(date)) < 12 ? "a.m." : "p.m.");
	}
}
